A middlebox is a network appliance that manipulates Internet traffic by optimizing data flow across the network. Middleboxes can be configured as wide area network (WAN) optimizers and can be deployed in pairs across two geographically separated locations to optimize data traffic between the two middleboxes. Middleboxes can proxy the transmission control protocol (TCP) connections by monitoring the TCP connections on a first link (local area network (LAN)) and forming a new TCP connection (a proxied TCP connection) on second link (WAN) based on the connection on the first link. Middleboxes can be connected through a single link or multiple links such as a leased line link and a broadband link.
A middlebox can provide data optimization for the TCP connections between two middleboxes, for example, one appliance in branch office and the other appliance in data center. These appliances compress data traffic in WAN link, by a data compression technique called data deduplication. Deduplication is an optimization technique used to improve storage utilization and can also be applied to network data transfers to reduce the number of bytes that must be sent.
Cache techniques are also used to improve storage utilization. Eviction is an integral part of cache data handling. If a connection request arrives and if it needs space for its unique data to be stored, then some caching techniques can be employed for considering the data to be evicted. There are various cache techniques including last recently used (LRU), most recently used (MRU), and Pseudo-LRU techniques. For the LRU algorithm, the least recently used items are discarded first. This algorithm requires keeping track of what was used when, which is expensive if one wants to make sure the algorithm always discards the least recently used item. General implementations of this technique require keeping “age bits” for cache-lines and track the “Least Recently Used” cache-line based on age-bits. In such an implementation, every time a cache-line is used, the age of all other cache-lines changes. For the MRU algorithm, in contrast to the LRU algorithm, the most recently used items are discarded first. MRU algorithm is most useful in situations where the older an item is, the more likely it is to be accessed. For the pseudo-LRU algorithm, one of the least recently used items is discarded. As an example, for CPU caches with large associativity (generally >4 ways), implementation cost of LRU becomes prohibitive. In many CPU caches, a scheme that almost always discards one of the least recently used items is sufficient. So many CPU designers choose a PLRU algorithm which only needs one bit per cache item to work. p-LRU typically has a slightly worse miss ratio, has a slightly better latency, and uses slightly less power than LRU.
Data can be served for different kinds of applications. Each application can have a different priority. For example, web-browsing data can be handled as best effort service and thus lowest priority, while video data can be handled in highest priority. In another example, low-quality video streams often consume several hundred kilobits per second, while high definition video can require up to several megabits per second of bandwidth. As a result, even one stream of low quality video can consume a large percentage of WAN bandwidth available to a branch office. Left unmanaged, this can cause a diminished experience for other branch users simultaneously attempting to connect to their virtual desktops or other resources hosted in datacenter (e.g., Microsoft Exchange or file servers). The problem occurs when there is an overwhelming rate of low or medium priority data coming to a cache that has limited space, the cache's space can often become full. Under current technologies, a compression history eviction happens on plain cache hit information and irrespective of priority data is evicted.